import { request } from "../../request/index.js";
import regeneratorRuntime from "../../libs/runtime/runtime";
const app = getApp();

Page({
    /**
     * 页面的初始数据
     */
    data: {
        carts: [], //购物车数据
        allCheck: false, //全选按钮
        money: 0, //总金额
        active: false, //默认为true
        shoppingData: [],
        login: false,
        bounced: false,
    },
    //修改要购物车要传的数据
    editCart: {
        goodId: "", //商品的id
        count: "", //数量
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function(options) {
        wx.removeStorageSync("pitchData"); //清除购物车中的数据
    },
    //获取购物车数据
    async ShoppingCartPsot() {
        if (wx.getStorageSync("token")) {
            let res = await request({
                url: "Shopping/findAll",
            });
            console.log(res);
            if (res.code == 200) {
                if (res.data.length == 0) {
                    wx.removeStorageSync("carts");
                    this.setData({
                        active: true,
                    });
                } else {
                    this.setData({
                        active: false,
                        carts: res.data,
                        allCheck: false, //全选按钮
                    });
                    app.globalData.carts = this.data.carts; // 更新全局缓存
                    app.storeCarts(); //更新之后持久化到 Storange 中
                }
            }
        }
    },
    //修改购物车
    async editCartPost() {
        let res = await request({ url: "Shopping/operation", data: this.editCart });
        console.log(res, "8888888888");
        if (res.code == 200) {
            this.setData({
                money: 0,
            });
            this.ShoppingCartPsot(); //重新渲染数据
        }
    },
    // 商品数量
    _updateCart(e) {
        console.log(e);
        this.editCart.goodId = e.detail.id; //赋值商品的id
        const { id, type, count } = e.detail;
        const item = this.data.carts.filter((it) => +it.goodId === +id)[0];

        switch (type) {
            //输入类型
            case "input":
                item.count = count;
                break;
                // +1 操作
            case "add":
                this.editCart.count = 1;
                this.setData({
                    money: this.data.carts
                        .reduce(
                            (sum, item) => sum + (item.isCheck ? item.count * item.price : 0),
                            0
                        )
                        .toFixed(2),
                });
                break;
                // -1操作
            case "sub":
                this.editCart.count = -1;
                //让总金额动态变化
                this.setData({
                    money: this.data.carts
                        .reduce(
                            (sum, item) => sum + (item.isCheck ? item.count * item.price : 0),
                            0
                        )
                        .toFixed(2),
                });
                break;
        }
        this.editCartPost(); //修改购物车的接口

        // 更新页面的数据
        this.setData({
            carts: this.data.carts,
            allCheck: false,
            shoppingData: [],
        });
        // // 购物车数据变化,更新全局的缓存购物车的数量
        // app.globalData.carts = this.data.carts;
        // //更新购物车数据到本地存储中
        // app.storeCarts();
    },
    // 切换单个选中状态
    changeCheck(e) {
        console.log(e);
        // 单选按钮的切换
        this.setData({
            shoppingData: [],
        });
        //遍历是否选中
        this.data.carts.forEach((item, index) => {
            if (+item.goodId === +e.currentTarget.dataset.id) {
                item.isCheck = !item.isCheck;
            }

            if (item.isCheck) {
                //存储购物车中选中的值
                this.setData({
                    shoppingData: [...this.data.shoppingData, item],
                });
            }
            console.log(this.data.shoppingData, "9999999999");
        });

        // 点击之后再把值赋值到页面中
        this.setData({
            carts: this.data.carts,
            allCheck: !this.data.carts.some((it) => !it.isCheck),
            money: this.data.carts
                .reduce(
                    (sum, item) => sum + (item.isCheck ? item.count * item.price : 0),
                    0
                )
                .toFixed(2),
        });
        //更新之后持久化到 Storange 中
        // app.storeCarts();
    },
    // 更新商品全部选中壮态
    changeAllCheck() {
        console.log();
        this.setData({
            shoppingData: [],
        });
        //如果 allCheck 为真:当前是全选 切换成全部商品都选不中
        //如果 allCheck  为假:当前商品有没有选中的或者全不选 切换成全部商品都选中
        this.data.carts.forEach((item) => {
            if (this.data.allCheck) {
                item.isCheck = false;
            } else {
                this.setData({
                    shoppingData: [...this.data.shoppingData, item],
                });
                console.log(this.data.shoppingData, "9999999999");
                item.isCheck = true;
            }
        });

        // 点击之后再把值赋值到页面中
        this.setData({
            carts: this.data.carts,
            allCheck: !this.data.carts.some((it) => !it.isCheck),
            money: this.data.carts
                .reduce(
                    (sum, item) => sum + (item.isCheck ? item.count * item.price : 0),
                    0
                )
                .toFixed(2),
        });
        // 更新全局缓存
        // app.globalData.carts = this.data.carts;
        // //更新之后持久化到 Storange 中
        // app.storeCarts();
    },
    // 删除商品操作
    async _delete(e) {
        console.log(e);
        let res = await request({
            url: "Shopping/delete",
            data: { shoppingId: e.target.dataset.id },
        });
        console.log(res, "删除");
        if (res.code == 200) {
            wx.showToast({
                title: res.msg,
                icon: "none",
            });
            // 更新页面数据
            this.ShoppingCartPsot(); //获取购物车数据
        } else {
            wx.showToast({
                title: res.msg,
                icon: "none",
            });
        }
        app.globalData.carts = this.data.carts;
        //更新之后持久化到 Storange 中
        app.storeCarts();
    },
    //提交订单
    _submit(e) {
        console.log(e);
        console.log(this.data.allCheck, "9999999");

        if (this.data.shoppingData.length != 0) {
            wx.setStorageSync("pitchData", this.data.shoppingData); //提交后把选中的数据存到本地
            wx.removeStorageSync("couponId"); //清除优惠卷的本地存储的id
            wx.navigateTo({
                url: "../submit_order/submit_order",
            });
        } else {
            wx.showToast({
                title: "请选择要购买的商品",
                icon: "none",
            });
        }
    },
    // temporarilyBtn() {
    //     app.showModalTitle();
    // },
    //弹框确认按钮
    getUserInfo(e) {
        console.log(e, "321654987");
        if (e.detail.userInfo) {
            wx.login({
                success: async(result) => {
                    console.log(result);
                    let res = await request({
                        url: "User/login",
                        method: "post",
                        data: {
                            code: result.code,
                            name: e.detail.userInfo.nickName,
                            img: e.detail.userInfo.avatarUrl,
                        },
                    });
                    console.log(res);
                    if (res.code == 200) {
                        wx.setStorageSync("token", res.data); //存储用户的token
                        this.setData({
                            login: true,
                        });
                        this.ShoppingCartPsot(); //获取购物车数据
                    }
                },
            });
            //存储用户的信息
            wx.setStorageSync("userinfo", e.detail.userInfo);
        } else {
            //用户按了拒绝按钮
            wx.showModal({
                title: "警告",
                content: "您点击了拒绝授权，将无法使用小程序，请授权之后再使用!",
                showCancel: false,
                confirmText: "确定",
                confirmColor: "#3CC51F",
                success: function(res) {
                    // 用户没有授权成功，不需要改变 isHide 的值
                    if (res.confirm) {
                        console.log("用户点击了“返回授权”");
                    }
                },
            });
        }
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function() {},

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function() {
        wx.removeStorageSync("pitchData"); //清除购物车中的数据
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function() {},
    onTabItemTap: function(item) {
        console.log(item.index);
        console.log(item.pagePath);
        console.log(item.text);
        if (!wx.getStorageSync("token")) {
            this.setData({
                login: false,
                bounced: true,
            });

            // this.temporarilyBtn();
        } else {
            this.ShoppingCartPsot(); //获取购物车数据
            this.setData({
                login: true,
                bounced: true,
            });
        }
    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function() {},

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function() {},

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function() {},

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function() {},
});